package com.mars.admin.modules.post.mapper;

import com.mars.admin.modules.post.entity.PostShare;
import com.mybatisflex.core.BaseMapper;
import com.mybatisflex.core.paginate.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 帖子分享Mapper接口
 *
 * @author Mars
 * @version 1.0
 * @date 2025-01-07
 */
@Mapper
public interface PostShareMapper extends BaseMapper<PostShare> {

    /**
     * 根据帖子ID删除所有分享记录
     *
     * @param postId 帖子ID
     * @return 删除数量
     */
    int deleteByPostId(@Param("postId") Long postId);

    /**
     * 根据用户ID查询分享记录
     *
     * @param userId 用户ID
     * @param page 分页参数
     * @return 分享记录列表
     */
    Page<PostShare> selectByUserId(@Param("userId") Long userId, Page<PostShare> page);

    /**
     * 根据帖子ID查询分享记录
     *
     * @param postId 帖子ID
     * @param page 分页参数
     * @return 分享记录列表
     */
    Page<PostShare> selectByPostId(@Param("postId") Long postId, Page<PostShare> page);

    /**
     * 根据帖子ID统计分享数量
     *
     * @param postId 帖子ID
     * @return 分享数量
     */
    int countByPostId(@Param("postId") Long postId);

    /**
     * 根据用户ID统计分享数量
     *
     * @param userId 用户ID
     * @return 分享数量
     */
    int countByUserId(@Param("userId") Long userId);

    /**
     * 根据平台统计分享数量
     *
     * @param platform 分享平台
     * @return 分享数量
     */
    int countByPlatform(@Param("platform") Integer platform);

    /**
     * 查询热门分享的帖子ID列表
     *
     * @param limit 限制数量
     * @return 帖子ID列表
     */
    List<Long> selectHotSharedPostIds(@Param("limit") Integer limit);
} 